วันนี้จะเป็นภาคต่อของการใช้งานบอร์ด Arduino Uno WiFi กันครับ มาเริ่มกันเลยดีกว่า อันดับแรกคืออุปกรณ์ที่ต้องใช้งานสำหรับบทความนี้ได้แก่ DHT21 ซึ่งเป็นอปุกรณ์ที่ใช้สำหรับวัดค่าความชื้นและอุณหภูมิของอากาศ และบอร์ด Arduino Uno WiFi พร้อมทั้งอุปกรณ์ประกอบอื่นๆ เช่น Breadbroard และสาย Jumper เราจะลองเริ่มการใช้งานบอร์ด Arduino Uno WiFi ร่วมกับ DHT21 กันก่อน โดยการ Upload Sketch โดยไม่ใช้สาย USB ผ่านทาง OTA กันนะครับ ถ้ายังไม่รู้จะทำอย่างไร ก็ลองกลับไปอ่านบทความตอนที่ 1 ดูก่อนนะครับ
สำหรับผู้ที่ยังไม่เคยใช้ DHT21 ขอให้ลง Library ก่อนนะครับ
Library ของ DHT21
และสำหรับผู้ที่ยังไม่เคยใช้ Arduino Uno WiFi ให้ลง Library นี้ด้วยครับArduino Uno Wifi Developerสำหรับการต่ออุปกรณ์ก็ง่ายนิดเดียวครับ
- ต่อสายสีแดงของ DHT21 ไปที่ 5V ของบอร์ด Arduino Uno WiFi
- ต่อสายสีดำของ DHT21 ไปที่ GND ของบอร์ด Arduino Uno WiFi
- ต่อสายสีเหลืองของ DHT21 ไปที่ Digital pin 2 ของบอร์ด Arduino Uno WiFi
จากนั้นลองใช้ Sketch ด้านล่าง นี้เพื่อทดสอบการทำงานดูนะครับ
#include < dht.h >
#include < UnoWiFiDevEd.h >
#define BAUD 9600
dht DHT;
WifiData ESPSerial;
#define DHT21_PIN 2
void setup()
{
ESPSerial.begin(BAUD);
ESPSerial.println("DHT TEST PROGRAM ");
ESPSerial.print("LIBRARY VERSION: ");
ESPSerial.println(DHT_LIB_VERSION);
ESPSerial.println();
ESPSerial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}
void loop()
{
// READ DATA
ESPSerial.print("DHT21, \t");
int chk = DHT.read21(DHT21_PIN);
switch (chk)
{
case DHTLIB_OK:
ESPSerial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
ESPSerial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_CONNECT:
ESPSerial.print("Connect error,\t");
break;
case DHTLIB_ERROR_ACK_L:
ESPSerial.print("Ack Low error,\t");
break;
case DHTLIB_ERROR_ACK_H:
ESPSerial.print("Ack High error,\t");
break;
default:
ESPSerial.print("Unknown error,\t");
break;
}
// DISPLAY DATA
ESPSerial.print(DHT.humidity, 1);
ESPSerial.print(",\t");
ESPSerial.println(DHT.temperature, 1);
delay(2000);
}
//
// END OF FILE
//
|
เมื่อทดสอบเปิดเพื่อดูผลการทำงานโดยเรียก 192.168.240.1/console.html จะเห็นค่าที่วัดได้ดังรูปด้านล่างจะเห็นว่า Sketch นี้เรียกใช้ library ชื่อว่า dht.h และ UnoWiFiDevEd.hจากนั้นมีการกำหนดค่าความเร็วในการติดต่อที่ 9600 Baud/s และเรียก Object ที่ชื่อ ESPSerial ในการติดต่อสื่อสาร จะเห็นว่าคำสั่งในการทำงานเพื่อส่งข้อมูลไปที่บอร์ดแบบไร้สายในลักษณะนี้ก็มีคำสั่งที่คล้ายกับการต่อแบบใช้สายโดยใช้ serial monitor
หากเห็นค่าที่อ่านหน้าตาคล้ายๆ รูปนี้ก็เป็นอันว่า DHT21 ทำงานปกติ และสามารถส่งข้อความแบบไร้สายไปที่หน้าจอของเราได้ผ่าน WiFi network นะครับ
คราวนี้มาถึงการส่งค่าที่อ่านได้ขึ้นไปบน Cloud และแสดงค่าเป็นกราฟ (ค่าที่อ่านได้ กับเวลา) ด้วยเว็บไซต์ที่บริการฟรีอย่าง thingspeak.com นะครับ

ก่อนอื่นเริ่มต้นด้วยการลงทะเบียนกันก่อนถ้ายังไม่เคยมีบัญชี ซึ่งทำได้โดยการลงชื่อตามขั้นตอนตามเว็บต่อไปนี้ครับ
https://thingspeak.com/users/sign_up
เมื่อลงทะเบียนสำเร็จจะสามารถเข้ามาที่หน้าจอนี้ได้ซึ่งเราจะเริ่มส่งข้อมูลต่างๆ เข้าไปที่ tap Private View และ Public View ครับ

การจะใช้ thinkspeak แสดงค่าเป็นกราฟได้นั้นต้องตั้งค่ากันก่อน โดยมีขั้นตอนดังนี้
1. เลือกจำนวนกราฟที่ต้องการแสดงและตั้งค่าของแกนตั้ง ดังรูปด้านล่าง

2. เลือกที่ API keys และ Copy ค่าในช่อง "Write API Key" เพื่อจะใช้ใส่ใน Sketch ของเราครับ (ค่าที่ใช้คือค่าที่เบลอไว้นะครับ)

3. จากนั้นใช้ Sketch ด้านล่าง เพื่อ upload นะครับ โดยอาจจะทำแบบ OTA หรือ แบบใช้สาย USB ก็ได้
#include < dht.h >
#include < UnoWiFiDevEd.h >
dht DHT;
#define CONNECTOR "rest"
#define SERVER_ADDR "api.thingspeak.com"
#define DHT21_PIN 2
#define APIKEY_THINGSPEAK "XIY75CA1ZY4WHJXX" //Insert your API Key
short hum = 60;
short temp = 32;
short hum1=30;
short temp1=27;
void setup()
{
Ciao.begin(); // CIAO INIT
}
void loop() {
int chk = DHT.read21(DHT21_PIN);
hum = DHT.humidity;
temp = DHT.temperature;
String uri = "/update?api_key=";
uri += APIKEY_THINGSPEAK;
uri += "&field1=";
uri += String(hum);
uri += "&field2=";
uri += String(temp);
// uri += "&field3=";
// uri += String(hum1);
// uri += "&field4=";
// uri += String(temp1);
Ciao.println("Send data on ThingSpeak Channel");
CiaoData data = Ciao.write(CONNECTOR, SERVER_ADDR, uri);
if (!data.isEmpty()){
Ciao.println( "State: " + String (data.get(1)) );
Ciao.println( "Response: " + String (data.get(2)) );
}
else{
Ciao.println("Write Error");
}
delay(30000); // Thinkspeak policy
}
|
ขณะที่ upload sketch จะเห็น Arduino IDE แบบนี้

หากทำทุกอย่างสำเร็จ จะเห็นค่าลักษณะนี้ปรากฏที่หน้า WiFi Console ที่ลิงค์นี้ครับ http://192.168.240.1/console.html
สามารถลองเปิดค่าจริงของผมได้จากลิงค์นี้ครับ
https://thingspeak.com/channels/255125
ข้อสังเกตในการติดตั้ง Sketch
1. การทดลองด้วย Sketch ด้านบนนั้น Compile และ upload ด้วย Arduino IDE 1.8.1 หากใช้เวอร์ชั่น 1.7.x อาจจะมีผลต่อการ Compile
2. Thingspeak มีนโยบายในการปล่อยให้ upload ได้ทุก 30 วินาที เร็วกว่านั้น ไม่สามารถรับประกับการส่งค่าขึ้น Cloud ได้
3. สามารถเปิดดูกราฟได้ทั้งจาก Web browser บน PC หรือ Mobile device และสามารถโหลด Application มาเพื่อดูโดยเฉพาะได้อีกด้วย
แหล่งข้อมูลอ้างอิง
http://www.arduino.org/forums/programming-questions/arduino-uno-wifi-thingspeak-1123
http://www.arduino.org/products/boards/arduino-uno-wifi
https://www.arduitronics.com/product/1111/arduino-uno-wifi-board-from-italy-2
บทความการใช้งาน Arduino Uno WiFi ตอนที่ 1
วันนี้จบแค่นี้ครับ ถ้ามีคำถามหรืออยากจะแนะนำอะไร เชิญได้ที่ facebookของเรานะครับ
อุณหภูมิจริงขณะนี้ที่ร้าน Arduitronics.com
ความชื่นจริงขณะนี้ที่ร้าน Arduitronics.com
โดย Mountain "A"
www.arduitronics.com
www.facebook.com/arduitronics